1. Field of the Invention
The present invention generally relates to flashing a ROM and more particularly to flashing a ROM with reduced user involvement. Still more particularly, the invention relates to upgrading a ROM from an on-line service during the boot process.
2. Background Information
Computer systems include numerous electrical components that perform various functions. Computers include a central processing unit (“CPU”), memory, input/output devices and various other logic and devices all coupled together according to a system architecture. One of the types of components contained within most, if not all, computers is a read only memory (“ROM”) device. A ROM device has the characteristic that the information it contains is not erased when the computer is turned off. This is in contrast to a random access memory (“RAM”) device (e.g., main system RAM) for which the contents are lost when power is removed.
ROMs can be used for a variety of purposes and often there is more than one ROM device contained in the computer. One ROM device that is commonly found in most computers is referred to as the “system ROM.” The system ROM contains code that is executed by computer's CPU to perform a number of low-level functions. This code is generally referred to as the basic input/output system (“BIOS”) code. For example, the BIOS code executes the power on self test (“POST”) during system initialization (“boot up”). The POST routines test various subsystems in the computer system, isolate faults and report problems to the user. The BIOS code also is responsible for loading the operating system into the computer's main system memory. Further, the BIOS code handles the low-level input/output transactions to the various peripheral devices such as the hard disk drive and floppy drives. It should be understood that the BIOS code is stored in the ROM and copied to the main RAM memory for execution therefrom during runtime.
Early on, ROM devices were programmed at the factory and could not be reprogrammed by the operator of the computer. If updated BIOS code became available, the operator would either have to live without the update or replace the physical ROM device itself. Since then, it has become possible for operators (even home users) to cause the BIOS ROM to be reprogrammed without removing it from the computer. Reprogramming the ROM is often referred to as “flashing” the ROM. Typically, the process of flashing the ROM involved placing a floppy disk containing the new BIOS code in the floppy disk drive of the computer and executing flash code also stored on the floppy disk. The flash code caused the new BIOS code from the floppy disk to overwrite the older version of the BIOS on the ROM. This process is generally satisfactory, but does require involvement from the operator who may have no technical background or interest in being involved in the ROM flashing process. Also, this process can be very time consuming particularly for enterprises that have dozens, hundreds or thousands of computers.
Today, most ROM updates are reactive which means that the ROM is updated after a problem or other issue has arisen. The ROM is flashed with updated BIOS to resolve the issue or problem. In general, this requires the operator or Information Technology (“IT”) administrator in an enterprise to know that a ROM update exists for their system which in turn requires telephone calls or on-line research to find out if a ROM update exists—a time consuming and bothersome task. Once it is known that the ROM update exists, the ROM can then be flashed as explained above or via other mechanisms such as via remote booting or through operating system dependent tools.
Moreover, getting to the point where one knows that the BIOS ROM needs to be flashed, finding a ROM update and flashing the ROM with the update is a cumbersome, time consuming and, for many, a difficult task. Accordingly, there is a need to provide a better mechanism in the art of ROM updating.